package com.example.auto_rental.utils;

import cn.hutool.core.date.DateTime;
import cn.hutool.jwt.JWTPayload;
import cn.hutool.jwt.JWTUtil;

import java.util.Date;
import java.util.Map;

/**
 * @Name: JwtUtils
 * @Author: Jovan
 * @Date: 2024/9/12 17:04
 * @Description: JWT的工具类
 */

public class JWTUtils {
    // token的密钥
    public static final String SECRET_KEY = "jovan_yang";
    // token的过期时间，单位为分钟
    public static final Long EXPIRE_TIME = 1000L*60*30;

    /*
    * 创建一个JWT Token
    * @param payload 包含Token有效载荷的Map，将被添加签发时间、过期时间和生效时间。
    * @return 生成的JWT Token字符串。
    */
    public static String createToken(Map<String,Object> payload){
        // 获取当前时间
        Date now = DateTime.now();
        DateTime newTime = new DateTime(now.getTime()+EXPIRE_TIME);
        // 设置Token的签发时间
        payload.put(JWTPayload.ISSUED_AT,now);
        // 设置Token的过期时间
        payload.put(JWTPayload.EXPIRES_AT,newTime);
        // 设置Token的生效时间，确保Token在签发后立即生效
        payload.put(JWTPayload.NOT_BEFORE,now);
        return JWTUtil.createToken(payload,SECRET_KEY.getBytes());
    }
}
